<?php
declare (strict_types = 1);

namespace app\model;

use think\Model;
use think\model\concern\SoftDelete;

/**
 * Class app\model\User
 *
 * @property bool $gender 性别
 * @property bool $level 等级:1=普通用户,2=县代理,3=区代理,4=市代理,5=省代理,6=总代理
 * @property bool $loginfailure 失败次数
 * @property bool $promote 推广员:1=否,2=是
 * @property float $goods_quota 精品区分红额度
 * @property float $money 余额
 * @property float $shop_quota 商家分红额度
 * @property float $super_quota 优选区分红额度
 * @property int $deletetime 删除时间
 * @property int $first_buy_goods_time 第一次购买精品区时间
 * @property int $goods_devote 精品区贡献值
 * @property int $goods_team_devote 精品区团队贡献值
 * @property int $group_id 组别ID
 * @property int $id ID
 * @property int $jointime 加入时间
 * @property int $logintime 登录时间
 * @property int $maxsuccessions 最大连续登录天数
 * @property int $pid
 * @property int $prevtime 上次登录时间
 * @property int $score 积分
 * @property int $successions 连续登录天数
 * @property string $avatar 头像
 * @property string $bio 格言
 * @property string $birthday 生日
 * @property string $createtime 创建时间
 * @property string $email 电子邮箱
 * @property string $invitecode 邀请码
 * @property string $joinip 加入IP
 * @property string $loginip 登录IP
 * @property string $mobile 手机号
 * @property string $nickname 昵称
 * @property string $openid
 * @property string $password 密码
 * @property string $salt 密码盐
 * @property string $status 状态
 * @property string $token Token
 * @property string $updatetime 更新时间
 * @property string $username 用户名
 * @property string $verification 验证
 * @property-read \app\model\Shop $shop
 * @property-read \app\model\User $parent
 * @property-read \app\model\User[] $child
 * @property-read mixed $level_text
 * @method static \think\db\Query onlyTrashed()
 * @method static \think\db\Query withTrashed()
 */
class User extends Model
{
    //
	use SoftDelete;
	protected $createTime = 'createtime';
	protected $updateTime = 'updatetime';
	protected $deleteTime = 'deletetime';
	
	
	protected $append = [
		'level_text'
	];
	
	public function getLevelTextAttr($value, $data)
	{
		$value = $value ? $value : ($data['level'] ?? '');
		$list = ['1' => '普通用户', '2' => '代理', '3' => '县代理', '4' => '市代理', '5' => '省代理', '6' => '总代理'];
		return $list[$value] ?? '';
	}
	
	function parent()
	{
		return $this->belongsTo(User::class,'pid');
	}
	
	function shop()
	{
		return $this->hasOne(Shop::class,'user_id')->where(['status'=>2]);
	}
	
	function child()
	{
		return $this->hasMany(User::class,'pid');
	}
}
